<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google Maps JavaScript API Example</title>
<!--导入Google Maps API库文件。注意将本代码中的API Key替换为前文申请到的API Key-->
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAA1j86tnUDFv8OAtC8dZVtKRT2yXp_ZAY8_ufC3CFXhHIE1NvwkxSzmwrQ90SNUILzGRpsBiaa860gfQ"
      type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
    //声明GMap对象
    var map;
    //声明GPolyline对象
    var polyline;
    
    function load()
    {
      if (GBrowserIsCompatible())
      {
        map = new GMap2(document.getElementById("map"));
        map.setCenter(new GLatLng(39.92, 116.46), 4);
        addPolyline();
      }
    }
    
    function addPolyline(){
      polyline = new GPolyline(
        [
           new GLatLng(39.92, 116.46),
           new GLatLng(29.59, 106.54),
           new GLatLng(28.01, 120.65),
           new GLatLng(33.01, 100.65)
        ], //GLatLng()数组 
        "#FF0000", //折线颜色
        4, //折线宽度
        0.5 //透明度
        ); 
      map.addOverlay(polyline);
    }
    
    function removePolyline(){
      polyline.remove();
    }
    
    function getDistance2(from, to, unit) {
        //地球半径
        var R = 6378.137;
        //千米英里转化进制
        var M = 1.609344;
        with (Math) 
         {
            var lat1 = from.latRadians();
            var lng1 = from.lngRadians();
            var lat2 = to.latRadians();
            var lng2 = to.lngRadians();
            
            var dist = 2 * asin(sqrt( pow( (sin( (lat1 - lat2) /2 ) ), 2) + cos(lat1) * cos(lat2) * pow( (sin( (lng1 - lng2) / 2) ) ,2) ) ) * R;
        }
        
        if (unit=="M") 
        {
            dist = dist / M;
        }
        return dist;
    }
    
    function getDistance() {
        var dist  = 0;
        
        //折线上总的顶点数
        var count = polyline.getVertexCount();
        
        //历遍所有顶点，计算距离
        for(var i=0; i<count-1; i++){
            dist  += getDistance2(polyline.getVertex(i), polyline.getVertex(i+1));
        }
        return dist;
    }
    
    function showInfo() {
        alert("折线总距离为 " + getDistance() + " 千米");
    }
    
//]]>
    </script>
  </head>
  <!--加载时调用load()函数加载地图，注意加上onunload="GUnload()"防止内存泄露-->
  <body onload="load()" onunload="GUnload()">
    <!--以下id为map的DIV元素即为Google地图的容器-->
    <div id="map" style="width: 500px; height: 400px;"></div>
    <input type="button" value="计算折线实际距离" onclick="showInfo()" />
  </body>
</html>
